KMSでRSAES_OAEP_SHA_256を使ってキーマテリアルをインポートしてみた
こんにちは、臼田です。
KMSではキーマテリアルをAWS側で用意したものではなく、ユーザーが作成してインポートする事が可能です。
今回はRSAES_OAEP_SHA_256を使ってキーマテリアルをインポートする方法を共有します。
KMSの基本的な情報は下記を参照して下さい。
キーマテリアルのインポートとは
KMSで作成するカスタマーマスターキー(以下CMK)は幾つかのメタデータとキーマテリアルで構成されます。キーマテリアルはAWS側で作成することも可能ですが、幾つかの要件のためにユーザーが作成してインポートする場合があります。
詳細は下記をご確認下さい。
AWS Key Management Service (AWS KMS) にキーマテリアルをインポートする - AWS Key Management Service
RSAES_OAEP_SHA_256でのインポート
キーマテリアルのインポート時にはパブリックキーを利用してRSA PKCS #1で暗号化しますが、利用できるパディングオプションは下記の3種類です。
- RSAES_OAEP_SHA_256
- RSAES_OAEP_SHA_1
- RSAES_PKCS1_V1_5
このうち、公式ドキュメント上ではRSAES_OAEP_SHA_256の利用が推奨されていますが、手順ではRSAES_OAEP_SHA_1を利用した手順しか掲載されていないため、今回解説することにしました。
全般的な手順は上記公式ドキュメントや下記ブログにて解説していますので、差異のみ説明します。
RSAES_OAEP_SHA_256での暗号化
上記ブログで言うと「4. インポートする鍵の生成と暗号化」の後半部分に差異があります。
説明されている手順では、RSAES_OAEP_SHA_1での暗号化となるためこれを変更します。
RSAES_OAEP_SHA_256での暗号化は下記のように行います。
openssl pkeyutl -encrypt \ -in PlaintextKeyMaterial.bin \ -pkeyopt rsa_padding_mode:oaep \ -pkeyopt rsa_oaep_md:sha256 \ -inkey PublicKey.bin \ -keyform DER \ -pubin \ -out EncryptedKeyMaterial.bin
RSAES_OAEP_SHA_1の手順ではopenssl rsautl
を利用していますが、こちらは古くRSAES_OAEP_SHA_256を利用するにはopenssl pkeyutl
を利用する必要があるようです。
こちらのナレッジを元に作成しました。
こちらの手順を利用して正常にインポート出来ることが確認できました。
まとめ
公式ドキュメントには手順が解説されていませんでしたが、同じような手順でRSAES_OAEP_SHA_256を利用することが可能なので、ぜひ利用してみてはいかがでしょうか?